

import java.io.*;
import java.util.Date;

public class PracticsFile {

    public static void main(String[] args) throws IOException {

        // filecontact();
        testdir();
    }

    public static void testdir() throws IOException {
        //新建目录---递归创建目录
        File dirname = new File("a//b//c");
        dirname.mkdirs();

        //新建目录——-创建单个目录
        File dirname2 = new File("d");
        dirname2.mkdir();

        //删除目录
        File dirname3 = new File("e");
        dirname3.mkdir();
        dirname3.delete();


        //判断目录是否为空
        int len = dirname2.list().length;
        if (len == 0) {
            System.out.println("为空");
        } else {
            System.out.println("不为空");
        }


        //获取目录最后修改时间
        System.out.println(new Date(dirname2.lastModified()));

        //查看当前工作目录
        String curDir = System.getProperty("user.dir");//必须输入：user.dir，不能输入其他。user.dir是Java的系统属性，表示当前工作目录。
        System.out.println("当前工作目录为： " + curDir);

        //遍历目录下所有下一级文件或目录，注意只需要打印出下一级就可以了
        File file = new File("D://bella");
        String[] filenames = file.list();
        for(String filename:filenames){
            System.out.println(filename);
        }




    }

    public static void filecontact() throws IOException {

        /*******************************与文件内容无关*************************************/
        //新建空白文件，路径是当前项目路径
        File file1 = new File("test1.txt");
        file1.createNewFile();


        //新建空白文件，路径是绝对路径
        File file2 = new File("D:\\test2.txt");
        file2.createNewFile();

        //新建空白文件，路径和文件名分开
        File file3 = new File("D:\\", "test3.txt");
        file3.createNewFile();

        //判断文件存在性
        System.out.println("file1文件存在性为：" + file1.exists());

        //判断文件大小
        System.out.println("file1文件大小为：" + file1.length());

        //删除文件
        File file0 = new File("test0.txt");
        file0.createNewFile();
        System.out.println("test0存在性 " + file0.exists());
        file0.delete();
        System.out.println("test0存在性 " + file0.exists());

        //获取文件读写属性
        System.out.println("file1的可读属性为 " + file1.canRead());
        System.out.println("file1的可写属性为 " + file1.canWrite());

        //设置文件为只读
        file1.setReadOnly();
        System.out.println("file1的可写属性为 " + file1.canWrite());

        //设置文件为可写
        file1.setWritable(true);
        System.out.println("file1的可写属性为 " + file1.canWrite());
        System.out.println("file1的可读属性为 " + file1.canRead());

        //查看文件最后修改时间
        System.out.println("file1的修改时间 " + new Date(file1.lastModified()));

        //获取文件路径
        System.out.println("file1的文件绝对路径 " + file1.getAbsolutePath());
        System.out.println("file1的文件相对路径 " + file1.getPath());


        //文件路径比较
        if (file1.getAbsolutePath().compareTo(file2.getAbsolutePath()) == 0) {
            System.out.println("文件路径一致");
        } else {
            System.out.println("文件路径不一致");
        }

        //获取文件名称，不要显示路径
        File file4 = new File("D:\\test4.txt");
        file4.createNewFile();
        System.out.println(file4.getName());

        //获取文件路径(绝对路径)-1
        System.out.println(file4.getPath());

        //获取文件路径（绝对路径）-2
        System.out.println(file4.getAbsolutePath());

        //判断是否为文件
        System.out.println(file4.isFile());


        //判断是否为目录和新建目录
        File file5 = new File("D:\\dir5");
        file5.mkdirs();//mkdirs可以创建多级目录，mkdir 只能创建单级目录，中间目录不存在时要报错。
        System.out.println(file5.isDirectory());

        //判断文件是否是隐藏文件
        File file6 = new File("test6.txt");
        file6.createNewFile();
        System.out.println(file6.isHidden());

        //列出指定目录下所有目录,只打印目录的下一层文件、目录名称----1
        File file7 = new File("D:\\bella");
        String[] array = file7.list();
        for (String name : array) {
            System.out.println(name);
        }

        //列出指定目录下所有目录,只打印目录的下一层文件、目录名称---以文件形式列出，再从文件里获取想要获取的内容
        System.out.println("------------------------------------------------------------");

        File file8 = new File("D:\\bella");
        File[] array2 = file8.listFiles();
        for (File file : array2) {
            System.out.println(file.getAbsolutePath());
        }


        //改文件名字
        File file9 = new File("test9.txt");
        file9.createNewFile();
        File file10 = new File("test10.txt");
        file9.renameTo(file10);


        //修改文件最后修改时间
        Date date = new Date();
        long dt = date.getTime();
        System.out.println(dt);
        file9.setLastModified(dt);
        System.out.println(file9.lastModified());


        //判断文件是否为可执行文
        File file11 = new File("test11.exe");
        file11.createNewFile();

        System.out.println(file11.canExecute());//没看到起作用
        file11.setExecutable(false);//没看到起作用
        System.out.println(file11.canExecute());//没看到起作用


        //列出系统里可用的根目录
        File file12 = new File("D://bella");//这个目录是多少没有关系。
        File[] files = file12.listRoots();
        for (File file : files) {
            System.out.println(file.getPath());
        }

        //获取文件上级目录,不能只传文件名称，必须要传文件名称的上级目录。
        File file13 = new File("D://bella//test9.txt");
        System.out.println(file13.getParent());


    }


    /**
     * 新建文件且写入内容
     */
    public static void filewrite() {
        System.out.println("---------filewrite------------");
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter("test.txt"));
            out.write("1111");
            out.close();
            System.out.println("文件创建成功！");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 读取文件内容
     */
    public static void readfile() {
        System.out.println("---------readfile------------");

        try {
            BufferedReader in = new BufferedReader(new FileReader("test.txt"));
            String str;
            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 给文件追加内容
     */

    public static void appendfile() {
        System.out.println("---------deletefile------------");
        BufferedWriter out = null;
        try {
            out = new BufferedWriter(new FileWriter("test.txt"));
            out.write("1111\n");
            out.close();
            System.out.println("文件创建成功！");

            out = new BufferedWriter(new FileWriter("test.txt", true));//new FileWriter("test.txt",true)注意必须在参数里加true,true代表追加
            out.write("2222");
            out.close();
            System.out.println("追加内容成功");
        } catch (IOException e) {
            e.printStackTrace();
        }


    }


}
